package org.leonos.utils;

import org.leonos.web.system.model.Menu;
import org.leonos.web.system.model.User;

import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.List;
import java.util.UUID;

/**
 * 常用工具
 * @author LeonXiao
 */
public class Utils {

	/**
	 * 生成随机的32位uuid
	 * @return 随机的32位uuid
	 */
	public static String createId() {
		return UUID.randomUUID().toString().replaceAll("-", "");
	}
	
	/**
	 * 得到字符串时间（yyyy-MM-dd HH:mm:ss）
	 * @return 格式化后的时间字符串
	 */
	public static String getDate() {
		SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
		return sdf.format(new Date());
	}
	
	/**
	 * 得到字符串时间
	 * @param date
	 * 				时间对象
	 * @param format
	 * 				格式
	 * @return 格式化后的时间字符串
	 */
	public static String getDate(Date date, String format) {
		SimpleDateFormat sdf = new SimpleDateFormat(format);
		return sdf.format(date);
	}

	/**
	 * 验证参数是否不为空,非空true
	 * @param object
	 * 				对象
	 * @return true：不为空  false：为空
	 */
	public static boolean isNotNull(Object object) {
		return object != null
			&& object != ""
			&& !"undefined".equals(object)
			&& !"null".equals(object)
			&& object.toString().trim().length() > 0;
	}

	/**
	 * 验证参数是否为空,空true
	 * @param object
	 * 				对象
	 * @return true：为空  false：不为空
	 */
	public static boolean isNull(Object object) {
		return object == null
			|| "null".equals(object.toString())
			|| "".equals(object.toString())
			|| "undefined".equals(object.toString())
			|| object.toString().trim().length() <= 0;
	}

	/**
	 * 判断用户是否需要进行权限验证（admin用户有所有权限，不用验证）
	 * @param user
	 *              用户
	 * @return boolean
	 */
	public static boolean isCheck(User user) {
		return user == null || !"admin".equals(user.get("username"));
	}

	/**
	 * 将菜单列表转换成字符串
	 * @param menus
	 *              用户
	 * @return String
	 */
	public static String getMenusToString(List<Menu> menus) {
		StringBuilder strBuilder = new StringBuilder();
		for (Menu m : menus) {
			strBuilder.append(m.getStr("name")).append(",");
		}
		return strBuilder.toString().substring(0, strBuilder.length() - 1);
	}

	/**
	 * 如果第一个字符是斜杠，就清除
	 * @param url
	 *          	访问路径
	 * @return String
	 */
	public static String cleanSlash(String url){
		return Utils.isNotNull(url) && url.startsWith("/") ? cleanSlash(url.substring(1)) : url;
	}

}
